﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
using Systemet.Domain;
namespace Systemet
{
    public partial class Form1 : Form
    {
        private LoginController lc;
        private SideViews.SideKostnadsbudgetering Skb;
        public Form1()
        {
            InitializeComponent();
            string pass  = AccessController.Instance.Connection;
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            tPDefault.Controls.Add(new Views.Startkort());
            
            FlowController.Instance.StartKort = tPDefault;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.StartUpRemover();
            FlowController.Instance.StarSkarm();
            setEnablersOnToolStrip();
            setKostIntBudLockedValue();

        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            tCSidMenu.Height = 590;
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

        /// <summary>
        /// Kontrollerar om kostnadsbudgetering och/eller intäktsbudgetering är låsta
        /// för att förhindra att vidare budgeteringar görs för samma kalenderår.
        /// </summary>
        private void setKostIntBudLockedValue()
        {
            Domain.Budgetcontroller bc = new Budgetcontroller();
            bc.setKostIntBudLockedValue();
        }

        //Enable or dissable specified ToolStrip buttons depending on the UserRole
        private void setEnablersOnToolStrip()
        {
            ToolStrMKund.Enabled = AccessController.Instance.UserRoleLoggedInUser.KundkortSök;
            hanteraAnställdToolStripMenuItem.Enabled = AccessController.Instance.UserRoleLoggedInUser.PersonalkortSynlig;
            hanteraAktivitetToolStripMenuItem.Enabled = AccessController.Instance.UserRoleLoggedInUser.AktivitetskortSök;
            hanteraAnställdToolStripMenuItem.Enabled = AccessController.Instance.UserRoleLoggedInUser.PersonalkortSynlig;
            ToolStrMPrognos.Enabled = AccessController.Instance.UserRoleLoggedInUser.PrognostiseringSynlig;
            ToolStrMAvkastKrav.Enabled = AccessController.Instance.UserRoleLoggedInUser.AvkastningskravSynlig;
            ToolStrMBudgResult.Enabled = AccessController.Instance.UserRoleLoggedInUser.BudgeteratResultatSynlig;
            uppföljningToolStripMenuItem.Enabled = AccessController.Instance.UserRoleLoggedInUser.UppföljningSeResultat;
        }

        /// <summary>
        /// Vid val av kundKort läggs dess sidvy och mainvy till i accessController som är 
        /// en singleton och håller alla vyer när de startas upp
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void registreraKundToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AccessController.Instance.SidMeny = null;

            List<TabPage> kundVyer = new List<TabPage>();
            tPKundkort.Controls.Clear();
            tPKundkort.Controls.Add(new Views.Kundkort());
            kundVyer.Add(tPKundkort);
            tCSidMenu.Visible = true;
            FlowController.Instance.MainTabView = kundVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tPMainKund;
            FlowController.Instance.TcMainView =tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideKundkort());
        }

        //Val av kostnadsbudgeteringsvy (Innehåller flera vyer då det finns 4 moduler till denna
        //Dessa läggs till i en lista av tabPages för att kallas på när de aktiveras
        private void kostnadsbudgeteringToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AccessController.Instance.SidMeny = null;
            tCSidMenu.Visible = true;
            List<TabPage> KostnbudgVyer = new List<TabPage>();
            KostnbudgVyer.Clear();
            tPResursAllo.Controls.Clear();
            tPPersonalRKost.Controls.Clear();
            tPDirKostn.Controls.Clear();
            tPKostRapp.Controls.Clear();
            tPResursAllo.Controls.Add(new Views.Resursallokering());
            tPPersonalRKost.Controls.Add(new Views.PersonalrelateradeKostnader());
            tPDirKostn.Controls.Add(new Views.Direktkostnadsbudgetering());
            tPKostRapp.Controls.Add(new Views.Kostnadsrapporter());
            

            KostnbudgVyer.Add(tPResursAllo);
            KostnbudgVyer.Add(tPPersonalRKost);
            KostnbudgVyer.Add(tPDirKostn);
            KostnbudgVyer.Add(tPKostRapp);
            FlowController.Instance.MainTabView = KostnbudgVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tPKostnBudg;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideKostnadsbudgetering());
        }

        //Intäktsbudgetvy, samma som Kostnadsbudgeteringsvy
        private void ToolStrMIntBudget_Click(object sender, EventArgs e)
        {
            List<TabPage> intbudgVyer = new List<TabPage>();

            //Flera vyer
            tCSidMenu.Visible = true;
            tPbudgPKund.Controls.Clear();
            tPbudgPProd.Controls.Clear();
            tPIntaktRapp.Controls.Clear();
            tPbudgPKund.Controls.Add(new Views.BudgeteringPerKund());
            tPbudgPProd.Controls.Add(new Views.BudgeteringPerProdukt());
            tPIntaktRapp.Controls.Add(new Views.Intaktsrapporter());
            intbudgVyer.Add(tPbudgPKund);
            intbudgVyer.Add(tPbudgPProd);
            intbudgVyer.Add(tPIntaktRapp);
            FlowController.Instance.MainTabView = intbudgVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tpIntakt;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideIntaktsBudgetering());
        }

        //Produktkortsvy
        private void produktkortToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tCSidMenu.Visible = true;
            List<TabPage> prodKortVyer = new List<TabPage>();
            tPProdKort.Controls.Clear();
            tPProdKort.Controls.Add(new Views.Produktkort());
            prodKortVyer.Add(tPProdKort);
            FlowController.Instance.MainTabView = prodKortVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tabPageArtikelkort;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideProduktkort());
        }

        //Avkastningsvy
        private void ToolStrMAvkastKrav_Click(object sender, EventArgs e)
        {
            tCSidMenu.Visible = true;
            List<TabPage> avkastVyer = new List<TabPage>();
            avkastVyer.Clear();
            tPDefault.Controls.Clear();
            tPDefault.Controls.Add(new Views.Startkort());
            avkastVyer.Add(tPDefault);
            FlowController.Instance.MainTabView = avkastVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tPAvkastKrav;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideAvkastningskrav());
        }

        //Anställdsvy
        private void hanteraAnställdToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tCSidMenu.Visible = true;
            List<TabPage> anstalldVyer = new List<TabPage>();
            tPAnstalld.Controls.Clear();
            tPAnstalld.Controls.Add(new Views.Personalkort());
            anstalldVyer.Add(tPAnstalld);
            FlowController.Instance.MainTabView = anstalldVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tabPageAnstalld;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideAnstalld());
        }

        //Aktivitetsvy
        private void hanteraAktivitetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            List<TabPage> aktivitetsVyer = new List<TabPage>();
            tAktivitet.Controls.Clear();
            tAktivitet.Controls.Add(new Views.AktivitetKort());
            aktivitetsVyer.Add(tAktivitet);
            tCSidMenu.Visible = true;
            FlowController.Instance.MainTabView = aktivitetsVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tabPageAktivitet;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideAktivitet());
        }

        //Prognosvy
        private void ToolStrMPrognos_Click(object sender, EventArgs e)
        {
            tCSidMenu.Visible = true;
            List<TabPage> prognosVyer = new List<TabPage>();
            tPPrognos.Controls.Clear();
            tPPrognos.Controls.Add(new Views.Prognoskort());
            prognosVyer.Add(tPPrognos);
            FlowController.Instance.MainTabView = prognosVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tPSidPrognos;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SidePrognos());
        }

        //BudgeteratResultatvy
        private void ToolStrMBudgResult_Click(object sender, EventArgs e)
        {
            tCSidMenu.Visible = true;
            List<TabPage> BudgResultatVyer = new List<TabPage>();
            tPBudgResult.Controls.Clear();
            tPBudgResult.Controls.Add(new Views.BudgeteratResultat());
            BudgResultatVyer.Add(tPBudgResult);
            FlowController.Instance.MainTabView = BudgResultatVyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tPBudgResultat;
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideBudgeteratResultat());
        }

        //Uppföljningsvy
        private void ToolStrMUppfoljning(object sender, EventArgs e)
        {
            tCSidMenu.Visible = true;
            List<TabPage> budgUppfoljningsvyer = new List<TabPage>();
            tPUppfoljning.Controls.Clear();
            tPUppfoljning.Controls.Add(new Views.Uppfoljning());
            budgUppfoljningsvyer.Add(tPUppfoljning);
            FlowController.Instance.MainTabView = budgUppfoljningsvyer;
            FlowController.Instance.TCmeny = tCSidMenu;
            FlowController.Instance.TabMeny = tPSidUppfoljning; //Sätt sidotabbpage
            FlowController.Instance.TcMainView = tCMainView;
            FlowController.Instance.SidMenyHandler(new SideViews.SideUppfoljning());
        }
        
        //Avsluta systemet
        private void avslutaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Vill du verkligen avsluta Systemet?", "Avsluta systemet?", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                Application.Exit();
        }
        //Utloggning av systemet
        private void loggaUtToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Vill du verkligen logga ut från Systemet?", "Logga ut?", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
            {
                lc = new LoginController();
                this.Dispose();
                //this.Hide();
                lc.logOut();
            }
        }

        /// <summary>
        /// Hjälpknappsevent, triggar att hjälpsida startas för den vy man är i
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_HelpButtonClicked(object sender, CancelEventArgs e)
        {
           UserControl mainView = AccessController.Instance.MainView;
           if (mainView == null)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Default.html");
           }
           if (mainView is Views.Produktkort)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Produktkort.html");
           }            
           if (mainView is Views.AktivitetKort)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Aktivitetskort.html");
           }
           if (mainView is Views.Kundkort)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Kundkort.html");
           }
           if (mainView is Views.Personalkort)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Personalkort.html");
           }
           if (mainView is Views.Prognoskort)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Prognoskort.html");
           }
           if (mainView is Views.Resursallokering)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Resursallokering.html");
           }
           if (mainView is Views.Uppfoljning)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Uppfoljning.html");
           }
           if (mainView is Views.Intaktsrapporter)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Intaktsrapport.html");
           }
           if (mainView is Views.BudgeteratResultat)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Budgeteratresultat.html");
           }
           if (mainView is Views.BudgeteringPerKund)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Budgeteringperkund.html");
           }
           if (mainView is Views.BudgeteringPerProdukt)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Budgeteringperprodukt.html");
           }
           if (mainView is Views.Direktkostnadsbudgetering)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Direktkostnadsbudgetering.html");
           }
           if (mainView is Views.Kostnadsrapporter)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Kostnadsrapporter.html");
           }
           if (mainView is Views.PersonalrelateradeKostnader)
           {
               System.Diagnostics.Process.Start("C:\\Users\\Janko\\Desktop\\Skola\\SysutvecklingProjekt\\ProgUtveckling\\Systemet\\Systemet\\Webpage\\Personalrelateradekostnader.html");
           }

        }
    
    }
}
